from locust import HttpLocust, TaskSet, task


# 定义用户行为，继承TaskSet类，用于描述用户行为
# (这个类下面放各种请求，请求是基于requests的，每个方法请求和requests差不多，请求参数、方法、响应对象和requests一样的使用，url这里写的是路径)
# client.get===>requests.get
# client.post===>requests.post
import app
from api.GoodsAPI import Goods

class test_126(TaskSet):
    # task装饰该方法为一个事务方法的参数用于指定该行为的执行权重。参数越大，每次被虚拟用户执行概率越高，不设置默认是1，
    @task()
    def test_get_goods_list(self):
        # 获取商品列表
        self.get_goods_list_url = Goods().get_goods_list_url
        myData = {"pageSize": 500, "pageNumber": 1}
        myHeads = {"Content-Type": "application/x-www-form-urlencoded", "token": app.TOKEN}
        r = self.client.get(self.get_goods_list_url, json=myData, headers=myHeads, verify=False)
        assert r.json()['msg'] == "成功"

# 这个类类似设置性能测试，继承HttpLocust
class websitUser(HttpLocust):
    # 指向一个上面定义的用户行为类
    task_set = test_126
    # 执行事物之间用户等待时间的下界，单位毫秒，相当于lr中的think time
    min_wait = 3000
    max_wait = 6000


# 启动
# locust -f locust_test.py --host=http://www.126.com
if __name__ == "__main__":
    import os
    os.system("locust -f locust_test.py --host=https://czt.crhlink.com")
